Subject: NC

Envivo Bio, Inc.; Confidential

logo

1.1 Overview of microbial community composition

Figure 1 is an interactive figure showing the microbial community composition in each collected sample. Here, each color and shade corresponds to a different genus. For reference, domestic dogs (Canis familiaris) and gray wolves (Canis lupus) are different species that belong to the same genus (Canis).

You can interact with this figure by:

Figure 1: Microbial community composition of collected saliva, stool, and CapScan samples. CapScan samples are ordered from proximal to distal intestine (i.e., increasing distance from mouth). Taxonomic composition is reported at the genus rank. Genera present at <1% relative abundance across all samples are reported as “Other genera”. Note: Blue = Firmicutes; Yellow = Actinomycetes; Green = Bacteroidetes; Red = Proteobacteria; Purple = all other phyla. Shades of the same color (except purple) correspond to different genera from the same phylum.



1.2 High-resolution snapshot of community composition

Figure 2 is an interactive figure showing the microbial community composition at higher taxononomic resolution. Here, each row corresponds to a unique microbe.

You can interact with this figure by:



Figure 2: Heat map showing relative abundance of microbes in each sample (N = 209 total identified). Each row corresponds to a unique microbe and each column corresponds to an individual sample. Note the relative abundance colorscale is in log units.



1.3 Notable microbes detected



1.4 References

Quévrain, E., Maubert, M.A., Michon, C., Chain, F., Marquant, R., Tailhades, J., et al. (2017) Identification of an anti-inflammatory protein from Faecalibacterium prausnitzii, a commensal bacterium deficient in Crohn’s disease. Gut 65: 415–425.

Vogel, V., Bauer, R., Mauerer, S., Schiffelholz, N., Haupt, C., Seibold, G.M., et al. (2021) Angicin, a novel bacteriocin of Streptococcus anginosus. Sci Rep 11: 1–16.

LS0tCnRpdGxlOiAiPGJyPiBUYXhvbm9taWMgcHJvZmlsaW5nIG9mIGJhY3RlcmlhbCBhbmQgYXJjaGFlYWwgY29tbXVuaXRpZXMgZnJvbSBzYWxpdmEsIHN0b29sLCBhbmQgQ2FwU2Nhbi1zYW1wbGVkIGd1dCBtZXRhZ2Vub21lcyIKb3V0cHV0OgogIGh0bWxfZG9jdW1lbnQ6CiAgICBkZl9wcmludDogcGFnZWQKICAgIHRvYzogdHJ1ZQogICAgdG9jX2Zsb2F0OiB0cnVlCiAgaHRtbF9ub3RlYm9vazogZGVmYXVsdAogIHBkZl9kb2N1bWVudDogZGVmYXVsdAotLS0KCi0tLQoKPHN0eWxlPgpkaXYuaGlnaGxpZ2h0IHsKYmFja2dyb3VuZC1jb2xvcjogI0YyRjJGMjsKcGFkZGluZzogMHB4Owpib3JkZXItcmFkaXVzOiAycHg7Cn0KCjwvc3R5bGU+CgojIyMgPGI+PGk+U3ViamVjdDogTkM8L2I+PC9pPgoqRW52aXZvIEJpbywgSW5jLjsgQ29uZmlkZW50aWFsKgoKYGBge3Igc2V0dXAsIGluY2x1ZGUgPSBGQUxTRX0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFKQpgYGAKCmBgYHtyIGFkZCBsb2dvLCBlY2hvID0gRkFMU0V9CmxvZ29fcGF0aCA8LSAiLi4vbG9nby9lbnZpdm8uc3ZnIgoKaHRtbHRvb2xzOjppbWcoc3JjID0ga25pdHI6OmltYWdlX3VyaShsb2dvX3BhdGgpLCAKICAgICAgICAgICAgICAgYWx0ID0gImxvZ28iLCAKICAgICAgICAgICAgICAgc3R5bGUgPSAicG9zaXRpb246YWJzb2x1dGU7IHRvcDowOyByaWdodDowOyBwYWRkaW5nOjEwcHg7IHdpZHRoOiAxNDVweDsgaGVpZ2h0OiA0MnB4IikKYGBgCgpgYGB7ciBsb2FkIHBhY2thZ2VzLCBpbmNsdWRlID0gRkFMU0V9CiMgTGlzdCByZXF1aXJlZCBwYWNrYWdlcwpjcmFuUGFja2FnZXMgPC0gYygiQmlvY01hbmFnZXIiLCAiZ2dwbG90MiIsICJkcGx5ciIsICJ0aWR5ciIsCiAgICAgICAgICAgICAgICAgICJhcGUiLCAiZ2dwbG90MiIsICJyZXNoYXBlMiIsICJwbG90bHkiLCAiaGVhdG1hcGx5IikKYmlvY1BhY2thZ2VzIDwtIGMoInBoeWxvc2VxIiwgIkJpb3N0cmluZ3MiKQoKIyBJbnN0YWxsIG1pc3NpbmcgQ1JBTiBwYWNrYWdlcwppbnN0YWxsZWRDUkFOIDwtIGNyYW5QYWNrYWdlcyAlaW4lIHJvd25hbWVzKGluc3RhbGxlZC5wYWNrYWdlcygpKQppZiAoYW55KGluc3RhbGxlZENSQU4gPT0gRkFMU0UpKSB7CiAgaW5zdGFsbC5wYWNrYWdlcyhjcmFuUGFja2FnZXNbIWluc3RhbGxlZENSQU5dLAogICAgICAgICAgICAgICAgICAgcmVwb3MgPSAnaHR0cDovL2NyYW4udXMuci1wcm9qZWN0Lm9yZycpCn0KCiMgSW5zdGFsbCBtaXNzaW5nIEJpb2NvbmR1Y3RvciBwYWNrYWdlcwppbnN0YWxsZWRCaW9jIDwtIGJpb2NQYWNrYWdlcyAlaW4lIHJvd25hbWVzKGluc3RhbGxlZC5wYWNrYWdlcygpKQppZiAoYW55KGluc3RhbGxlZEJpb2MgPT0gRkFMU0UpKSB7CiAgQmlvY01hbmFnZXI6Omluc3RhbGwoYmlvY1BhY2thZ2VzWyFpbnN0YWxsZWRCaW9jXSkKfQoKIyBMb2FkIHBhY2thZ2VzCmxhcHBseShjKGNyYW5QYWNrYWdlcywgYmlvY1BhY2thZ2VzKSwgbGlicmFyeSwgY2hhcmFjdGVyLm9ubHkgPSBUUlVFKQpgYGAKCmBgYHtyIGxvYWQgZGF0YSwgaW5jbHVkZSA9IEZBTFNFfQojIExvYWQgQ29zbW9zSUQgZGF0YSBhbmQgZm9ybWF0dGVkIG1ldGFkYXRhCmNvc21vcyA8LSByZWFkLmNzdihmaWxlID0gIi4uL2RhdGEvQ1AwNDYxOF9jb3Ntb3NpZF8yMDIyMDkwNi5jc3YiKQptZXRhIDwtIHJlYWQuY3N2KGZpbGUgPSAiLi4vZGF0YS9DUDA0NjE4X21ldGFkYXRhLmNzdiIpCmBgYAoKYGBge3IgZm9ybWF0IGRhdGEsIGluY2x1ZGUgPSBGQUxTRX0KIyBQcmVwYXJlIHRheF90YWJsZSBhbmQgb3R1X3RhYmxlIG9iamVjdHMKdGF4IDwtIGNvc21vcyAlPiUKICBzZWxlY3QoUGh5bHVtLCBDbGFzcywgT3JkZXIsIEZhbWlseSwgR2VudXMsIFNwZWNpZXMsIFN0cmFpbikgJT4lCiAgYXMubWF0cml4ICU+JQogIHRheF90YWJsZQoKc3RhcnRfaW5kIDwtIGdyZXAoIlN0cmFpbiIsIGNvbG5hbWVzKGNvc21vcykpKzEKc3RvcF9pbmQgPC0gbmNvbChjb3Ntb3MpLTIKYWJ1bmRhbmNlX3Njb3JlcyA8LSBjb3Ntb3NbLHN0YXJ0X2luZDpzdG9wX2luZF0gJT4lIG90dV90YWJsZSguLCB0YXhhX2FyZV9yb3dzID0gVFJVRSkKCiMgUmVmb3JtYXQgc2FtcGxlIG5hbWVzIGFuZCBtZXRhZGF0YSBzYW1wbGUgbmFtZXMgc28gdGhleSBtYXRjaApjb2xuYW1lcyhhYnVuZGFuY2Vfc2NvcmVzKSA8LSBjb2xuYW1lcyhhYnVuZGFuY2Vfc2NvcmVzKSAlPiUKICBnc3ViKCJYIiwgIiIsIC4pICU+JQogIGdzdWIoIl8uKiIsICIiLCAuKSAlPiUKICBwYXN0ZTAoIkVCXyIsIC4pCgpyb3cubmFtZXMobWV0YSkgPC0gbWV0YSAlPiUKICBwdWxsKFNhbXBsZV9udW1iZXIpICU+JQogIHBhc3RlMCgiRUJfIiwgLikKCnNhbV9kYXRhIDwtIHNhbXBsZV9kYXRhKG1ldGEpCmBgYAoKYGBge3IgYnVpbGQgcGh5bG9zZXEsIGluY2x1ZGUgPSBGQUxTRX0KIyBCdWlsZCBwaHlsb3NlcSBvYmplY3QKcHMgPC0gcGh5bG9zZXEodGF4LCBhYnVuZGFuY2Vfc2NvcmVzLCBzYW1fZGF0YSkKYGBgCgpgYGB7ciB0cmFuc2Zvcm0gZGF0YSwgaW5jbHVkZSA9IEZBTFNFfQojIExvZyB0cmFuc2Zvcm0KcHNMb2cgPC0gcHMgJT4lIHRyYW5zZm9ybV9zYW1wbGVfY291bnRzKC4sIGZ1bmN0aW9uKHgpIGxvZyh4ICsgMSwgYmFzZSA9IDEwKSkKCiMgUmVsYXRpdmUgYWJ1bmRhbmNlIHRyYW5zZm9ybQpwc1JBIDwtIHBzICU+JSB0cmFuc2Zvcm1fc2FtcGxlX2NvdW50cyguLCBmdW5jdGlvbih4KSB4L3N1bSh4KSoxMDApCmBgYAoKYGBge3IgcmFuayBwaHlsYSwgaW5jbHVkZSA9IEZBTFNFfQpwaHlfcmFuayA8LSBwc1JBICU+JQogIHRheF9nbG9tKC4sIHRheHJhbmsgPSAiUGh5bHVtIikgJT4lCiAgcHNtZWx0ICU+JQogIGdyb3VwX2J5KFBoeWx1bSkgJT4lCiAgc3VtbWFyaXNlKG1lZGlhbiA9IG1lZGlhbihBYnVuZGFuY2UpKQoKcGh5X3JhbmsgJT4lIGFycmFuZ2UoZGVzYyhtZWRpYW4pKQpgYGAKCmBgYHtyIHN1YmplY3Qgc3Vic2V0LCBpbmNsdWRlID0gRkFMU0V9CiMgU2V0IHN1YmplY3QKc3ViamVjdCA8LSAiTkMiCgojIFN1YnNldCB0byBzdWJqZWN0IHNhbXBsZXMgYW5kIGRyb3AgbWlzc2luZyB0YXhhCnBzU3ViIDwtIHN1YnNldF9zYW1wbGVzKHBzLCBTdWJqZWN0ID09IHN1YmplY3QpICU+JQogIHBydW5lX3RheGEodGF4YV9zdW1zKC4pID4gMCwgLikKCiMgQWRkIHBsb3QgbGFiZWwgZm9yIGVhY2ggc2FtcGxlCnNhbXBsZV9kYXRhKHBzU3ViKSRQbG90X2xhYmVsIDwtIHBhc3RlMChzYW1wbGVfbmFtZXMocHNTdWIpLCAiICgiLCBzYW1wbGVfZGF0YShwc1N1YikkU2FtcGxlX3R5cGUsICIpIikKCiMgUmVsYXRpdmUgYWJ1bmRhbmNlIHRyYW5zZm9ybQpwc1N1Yl9yYSA8LSBwc1N1YiAlPiUgdHJhbnNmb3JtX3NhbXBsZV9jb3VudHMoLiwgZnVuY3Rpb24oeCkgeC9zdW0oeCkqMTAwKQpgYGAKCmBgYHtyIHBsb3QgYmFyLCBpbmNsdWRlID0gRkFMU0V9CiMgRGVmaW5lIE5PVCBJTiBvcGVyYXRvcgonJSFpbiUnIDwtIGZ1bmN0aW9uKHgseSkhKCclaW4lJyh4LHkpKQoKIyBBZ2dsb21lcmF0ZSBhdCBHZW51cyBhbmQgbWVsdAp0YXhyYW5rIDwtICJHZW51cyIKbWVsdCA8LSBwc1N1Yl9yYSAlPiUgdGF4X2dsb20oLiwgdGF4cmFuayA9IHRheHJhbmspICU+JSBwc21lbHQKCiMgRGVmaW5lIG1ham9yIHBoeWxhCm1ham9yX3BoeSA8LSBjKCJGaXJtaWN1dGVzIiwgIkFjdGlub2JhY3RlcmlhIiwgIkJhY3Rlcm9pZGV0ZXMiLCAiUHJvdGVvYmFjdGVyaWEiKQoKIyBJZGVudGlmeSBnZW5lcmEgcHJlc2VudCBpbiA8MSUgcmVsYXRpdmUgYWJ1bmRhbmNlIGluIGFsbCBzYW1wbGVzCnJhcmVfZ2VuZXJhIDwtIG1lbHQgJT4lCiAgZ3JvdXBfYnkoU2FtcGxlX251bWJlciwgR2VudXMpICU+JQogIHN1bW1hcml6ZShzdW0gPSBzdW0oQWJ1bmRhbmNlKSkgJT4lCiAgdW5ncm91cCgpICU+JQogIGdyb3VwX2J5KEdlbnVzKSAlPiUKICBzdW1tYXJpemUobWF4ID0gbWF4KHN1bSkpICU+JQogIGZpbHRlcihtYXggPCAxKSAlPiUKICBwdWxsKEdlbnVzKQoKIyBDcmVhdGUgbmV3IGNvbHVtbiBjb250YWluaW5nIG5hbWUgb2YgZ2VudXMgaWYgYWJvdmUgY3V0b2ZmIG9yICJPdGhlciBnZW5lcmEiIGlmIG5vdApkZiA8LSBtZWx0ICU+JQogIG11dGF0ZShQaHlfZ3JvdXAgPSBjYXNlX3doZW4oUGh5bHVtICUhaW4lIG1ham9yX3BoeSB+ICJPdGhlciBwaHlsdW0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSB+IFBoeWx1bSksCiAgICAgICAgIFBoeV9ncm91cCA9IGNhc2Vfd2hlbihHZW51cyAlaW4lIHJhcmVfZ2VuZXJhIH4gIk90aGVyIHBoeWx1bSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFIH4gUGh5X2dyb3VwKSwKICAgICAgICAgVGF4X2xhYmVsID0gY2FzZV93aGVuKEdlbnVzICVpbiUgcmFyZV9nZW5lcmEgfiAiQWFPdGhlciBnZW5lcmEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSB+IEdlbnVzKSkgJT4lCiAgZ3JvdXBfYnkoU3ViamVjdCkgJT4lCiAgYXJyYW5nZShTdWJqZWN0LCBTYW1wbGVfdHlwZSkKCiMgRGVmaW5lIG9yZGVyCnBoeV9vcmRlciA8LSBjKCJPdGhlciBwaHlsdW0iLAogICAgICAgICAgICAgICAiUHJvdGVvYmFjdGVyaWEiLAogICAgICAgICAgICAgICAiQmFjdGVyb2lkZXRlcyIsCiAgICAgICAgICAgICAgICJBY3Rpbm9iYWN0ZXJpYSIsCiAgICAgICAgICAgICAgICJGaXJtaWN1dGVzIikgJT4lIHJldgoKZ2VuX29yZGVyIDwtIGRmICU+JQogIHNlbGVjdChQaHlfZ3JvdXAsIFRheF9sYWJlbCkgJT4lCiAgbXV0YXRlKE9yZGVyID0gbWF0Y2goUGh5X2dyb3VwLCBwaHlfb3JkZXIpKSAlPiUKICBhcnJhbmdlKE9yZGVyLCBkZXNjKFRheF9sYWJlbCkpICU+JQogIGRpc3RpbmN0ICU+JQogIHB1bGwoVGF4X2xhYmVsKQoKZ2VuX29yZGVyIDwtIGZhY3Rvcihnc3ViKCJeQWEiLCAiIiwgZ2VuX29yZGVyKSwgbGV2ZWxzID0gZ3N1YigiXkFhIiwgIiIsIGdlbl9vcmRlcikpICMgdGhlIEFhIGlzIHRvIG1ha2Ugc3VyZSAiT3RoZXIiIGlzIHBsb3R0ZWQgYXQgdGhlIHRvcAoKZGYgPC0gZGYgJT4lCiAgbXV0YXRlKFRheF9sYWJlbCA9IGZhY3Rvcihnc3ViKCJeQWEiLCAiIiwgVGF4X2xhYmVsKSwgbGV2ZWxzID0gZ2VuX29yZGVyKSkKCiMgRGVmaW5lIGNvbG9ycwpwaHlfY29sb3IgPC0gZGF0YS5mcmFtZShQaHlsdW0gPSBjKCJBY3Rpbm9iYWN0ZXJpYSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk90aGVyIHBoeWx1bSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJhY3Rlcm9pZGV0ZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGaXJtaWN1dGVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUHJvdGVvYmFjdGVyaWEiKSwKICAgICAgICAgICAgICAgICAgICAgICAgQmFzZV9jb2xvciA9IGMoIiNGRkI3MjQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIzgzMkNGRiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIjNjRDNjJBIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiMwNzJBQzgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiI0U5M0I0RiIpKQoKcGh5X2NvbG9yIDwtIHBoeV9jb2xvclttYXRjaChwaHlfb3JkZXIsIHBoeV9jb2xvciRQaHlsdW0pLF0KCiMgRGF0YSBmcmFtZSBhcyBpbnB1dCwgZGF0YSBmcmFtZSB3aXRoIG5ldyBjb2x1bW4gb2YgaGV4IGNvZGVzIGFzIG91dHB1dApjb2xfcGFsZXR0ZSA8LSBkZiAlPiUKICBzZWxlY3QoUGh5X2dyb3VwLCBUYXhfbGFiZWwpICU+JQogIGRpc3RpbmN0ICU+JQogIG11dGF0ZShIZXhfY29kZSA9IE5BKQoKCmZvcihwaHkgaW4gcGh5X2NvbG9yJFBoeWx1bSkgewogIHRlc3QgPC0gY29sX3BhbGV0dGUgJT4lCiAgICBmaWx0ZXIoUGh5X2dyb3VwID09IHBoeSkgJT4lCiAgICBwdWxsKFRheF9sYWJlbCkgJT4lCiAgICBkcm9wbGV2ZWxzICU+JQogICAgbGV2ZWxzCiAgCiAgdGF4LmNvbG9yIDwtIGNvbG9yUmFtcFBhbGV0dGUoYyhwaHlfY29sb3IkQmFzZV9jb2xvclttYXRjaChwaHksIHBoeV9jb2xvciRQaHlsdW0pXSwgIndoaXRlIikpCiAgY29sdGVzdCA8LSB0YXguY29sb3IobGVuZ3RoKHRlc3QpKzIpICU+JQogICAgLlstbGVuZ3RoKC4pXQogIGNvbF9wYWxldHRlJEhleF9jb2RlW21hdGNoKHRlc3QsIGNvbF9wYWxldHRlJFRheF9sYWJlbCldIDwtIGNvbHRlc3QKfQoKY29sX3BhbGV0dGUgPC0gY29sX3BhbGV0dGUgJT4lIGFycmFuZ2UoZmFjdG9yKFRheF9sYWJlbCwgbGV2ZWxzID0gZ2VuX29yZGVyKSkKYGBgCgo8ZGl2IGNsYXNzPSJoaWdobGlnaHQiPgojIyMgMS4xIE92ZXJ2aWV3IG9mIG1pY3JvYmlhbCBjb21tdW5pdHkgY29tcG9zaXRpb24KPC9kaXY+CgpGaWd1cmUgMSBpcyBhbiBpbnRlcmFjdGl2ZSBmaWd1cmUgc2hvd2luZyB0aGUgbWljcm9iaWFsIGNvbW11bml0eSBjb21wb3NpdGlvbiBpbiBlYWNoIGNvbGxlY3RlZCBzYW1wbGUuIEhlcmUsIGVhY2ggY29sb3IgYW5kIHNoYWRlIGNvcnJlc3BvbmRzIHRvIGEgZGlmZmVyZW50IGdlbnVzLiBGb3IgcmVmZXJlbmNlLCBkb21lc3RpYyBkb2dzICgqQ2FuaXMgZmFtaWxpYXJpcyopIGFuZCBncmF5IHdvbHZlcyAoKkNhbmlzIGx1cHVzKikgYXJlIGRpZmZlcmVudCBzcGVjaWVzIHRoYXQgYmVsb25nIHRvIHRoZSBzYW1lIGdlbnVzICgqQ2FuaXMqKS4KPGJyPjxicj4KWW91IGNhbiBpbnRlcmFjdCB3aXRoIHRoaXMgZmlndXJlIGJ5OgoKKiBIb3ZlcmluZyB0aGUgY3Vyc29yIG92ZXIgYSBjb2xvciBpbiB0aGUgc3RhY2tlZCBiYXIgdG8gc2VlIHRoZSB0YXhvbm9taWMgaWRlbnRpdHksIHNhbXBsZSB0eXBlLCBhbmQgcmVsYXRpdmUgYWJ1bmRhbmNlIGNvcnJlc3BvbmRpbmcgdG8gdGhhdCBjb2xvciBhbmQgYmFyCiogQ2xpY2tpbmcgYW5kIGRyYWdnaW5nIHRoZSBjdXJzb3Igb3ZlciBhIHBvcnRpb24gb2YgdGhlIGZpZ3VyZSB0byB6b29tCiogU2luZ2xlLWNsaWNraW5nIGEgZ2VudXMncyBuYW1lIGluIHRoZSBsZWdlbmQgdG8gcmVtb3ZlIHRoYXQgZ2VudXMgZnJvbSB0aGUgZmlndXJlCiogRG91YmxlLWNsaWNraW5nICg8dT52ZXJ5IHF1aWNrbHk8L3U+KSBhIGdlbnVzJ3MgbmFtZSBpbiB0aGUgbGVnZW5kIHRvIG9ubHkgc2hvdyB0aGF0IGdlbnVzCmBgYHtyLCBvdXQud2lkdGggPSAiMTAwJSIsIGVjaG8gPSBGQUxTRX0KIyBQbG90CnBCYXIgPC0gcGxvdF9seShkZiwgeCA9IH5QbG90X2xhYmVsLCB5ID0gfkFidW5kYW5jZSwgdHlwZSA9ICJiYXIiLAogICAgICAgICAgICAgY29sb3IgPSB+VGF4X2xhYmVsLCBjb2xvcnMgPSBjb2xfcGFsZXR0ZSRIZXhfY29kZSwKICAgICAgICAgICAgIHRleHRwb3NpdGlvbiA9ICJub25lIiwKICAgICAgICAgICAgIHRleHQgPSB+cGFzdGUoIjxiPkdlbnVzOjwvYj4iLCBUYXhfbGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICI8YnI+PGJyPiIsICI8Yj5TYW1wbGUgdHlwZTo8L2I+IiwgU2FtcGxlX3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICI8YnI+IiwgIjxiPlJlbGF0aXZlIGFidW5kYW5jZTo8L2I+IiwgcGFzdGUwKHJvdW5kKEFidW5kYW5jZSwgZGlnaXRzID0gMSksICIlIikpLAogICAgICAgICAgICAgaG92ZXJpbmZvID0gInRleHQiKSAlPiUKICBsYXlvdXQoeGF4aXMgPSBsaXN0KHRpdGxlID0gIjxiPlNhbXBsZTwvYj4iLAogICAgICAgICAgICAgICAgICAgICAgdGlja3MgPSAib3V0c2lkZSIpLAogICAgICAgICB5YXhpcyA9IGxpc3QodGl0bGUgPSAiPGI+UmVsYXRpdmUgYWJ1bmRhbmNlICglKTwvYj4iLAogICAgICAgICAgICAgICAgICAgICAgdGlja3MgPSAib3V0c2lkZSIpLAogICAgICAgICBiYXJtb2RlID0gInN0YWNrIiwKICAgICAgICAgZm9udCA9IGxpc3QoZmFtaWx5ID0gIkFyaWFsIikpCgpwQmFyJHgkbGF5b3V0JHlheGlzJGxpbmVjb2xvciA8LSAiIzAwMDAwMCIKcEJhcgpgYGAKKipGaWd1cmUgMToqKiBNaWNyb2JpYWwgY29tbXVuaXR5IGNvbXBvc2l0aW9uIG9mIGNvbGxlY3RlZCBzYWxpdmEsIHN0b29sLCBhbmQgQ2FwU2NhbiBzYW1wbGVzLiBDYXBTY2FuIHNhbXBsZXMgYXJlIG9yZGVyZWQgZnJvbSBwcm94aW1hbCB0byBkaXN0YWwgaW50ZXN0aW5lICgqaSouKmUqLiwgaW5jcmVhc2luZyBkaXN0YW5jZSBmcm9tIG1vdXRoKS4gVGF4b25vbWljIGNvbXBvc2l0aW9uIGlzIHJlcG9ydGVkIGF0IHRoZSBnZW51cyByYW5rLiBHZW5lcmEgcHJlc2VudCBhdCA8MSUgcmVsYXRpdmUgYWJ1bmRhbmNlIGFjcm9zcyBhbGwgc2FtcGxlcyBhcmUgcmVwb3J0ZWQgYXMgIk90aGVyIGdlbmVyYSIuIDx1Pk5vdGU6PC91PiBCbHVlID0gKkZpcm1pY3V0ZXMqOyBZZWxsb3cgPSAqQWN0aW5vbXljZXRlcyo7IEdyZWVuID0gKkJhY3Rlcm9pZGV0ZXMqOyBSZWQgPSAqUHJvdGVvYmFjdGVyaWEqOyBQdXJwbGUgPSBhbGwgb3RoZXIgcGh5bGEuIFNoYWRlcyBvZiB0aGUgc2FtZSBjb2xvciAoZXhjZXB0IHB1cnBsZSkgY29ycmVzcG9uZCB0byBkaWZmZXJlbnQgZ2VuZXJhIGZyb20gdGhlIHNhbWUgcGh5bHVtLgoKYGBge3IsIGluY2x1ZGUgPSBGQUxTRX0KIyBPcmRpbmF0aW9uLWJhc2VkCnBIZWF0X29yZCA8LSBwbG90X2hlYXRtYXAocHNTdWJfcmEsIG1ldGhvZCA9ICJOTURTIiwgZGlzdGFuY2UgPSAiYnJheSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgdGF4YS5sYWJlbCA9ICJTdHJhaW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgIG1heC5sYWJlbCA9IDMwMCkKCiMgUmV0cmlldmUgcm93IGFuZCB0YXhvbiBvcmRlcnMKcm93X29yZGVyIDwtIHBIZWF0X29yZCRwbG90X2VudiR0YXhhLm9yZGVyICU+JSByZXYKdGF4X29yZGVyIDwtIHRheF90YWJsZShwc1N1Yl9yYSlbbWF0Y2gocm93X29yZGVyLCByb3duYW1lcyh0YXhfdGFibGUocHNTdWJfcmEpKSksXSAlPiUKICBhcy5kYXRhLmZyYW1lICU+JQogIG11dGF0ZSh0YXhvbiA9IHJvd25hbWVzKC4pLAogICAgICAgICBBYnVuZGFuY2UgPSAxLAogICAgICAgICBTYW1wbGUgPSBzdWJqZWN0KQpgYGAKCmBgYHtyLCBpbmNsdWRlID0gRkFMU0V9CiMgUHJlcGFyZSBkYXRhCnggPC0gcHNTdWJfcmEgJT4lIG90dV90YWJsZSAlPiUgYXMuZGF0YS5mcmFtZQpjb2xuYW1lcyh4KSA8LSBsYXBwbHkoY29sbmFtZXMoeCksIGdyZXAsIHNhbXBsZV9kYXRhKHBzU3ViX3JhKSRQbG90X2xhYmVsLCB2YWx1ZSA9IFRSVUUpICU+JSB1bmxpc3QKCiMgQWRkIHRheG9ub215CnggPC0gY2JpbmQoeCwgdGF4X3RhYmxlKHBzU3ViX3JhKSkKCiMgUmVvcmRlciByb3dzIGFuZCBjb2x1bW5zIHRvIG1hdGNoIG9yZGluYXRpb24KeCA8LSB4W21hdGNoKHJvd19vcmRlciwgcm93bmFtZXMoeCkpLF0KCiMgU2V0IGhvdmVydGV4dApuc2FtcCA8LSBuc2FtcGxlcyhwc1N1Yl9yYSkKaG92ZXJfc3RyYWluIDwtIHhbLCAxOm5zYW1wXQpob3Zlcl9zdHJhaW5bXSA8LSBwYXN0ZTAoIjxiPk1pY3JvYmU6PC9iPiAiLCB4JFN0cmFpbiwgIlxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICI8Yj5SZWxhdGl2ZSBhYnVuZGFuY2U6PC9iPiAiKQpob3Zlcl9zdHJhaW4gPC0gYXMubWF0cml4KGhvdmVyX3N0cmFpbikKCmhvdmVyX2FidW5kIDwtIHhbLCAxOm5zYW1wXSAlPiUgcm91bmQoLiwgZGlnaXRzID0gMikgJT4lIGFzLmRhdGEuZnJhbWUKaG92ZXJfYWJ1bmQgPC0gYXBwbHkoaG92ZXJfYWJ1bmQsIDIsIHBhc3RlMCwgIiUiKQpob3Zlcl9hYnVuZCA8LSBhcy5tYXRyaXgoaG92ZXJfYWJ1bmQpCgpob3Zlcl90YXggPC0geFssIDE6bnNhbXBdCmhvdmVyX3RheFtdIDwtIHBhc3RlMCgiXG4gXG48Yj5QaHlsdW06PC9iPiAiLCB4JFBoeWx1bSwgIlxuIiwKICAgICAgICAgICAgICAgICAgICI8Yj5DbGFzczo8L2I+ICIsIHgkQ2xhc3MsICJcbiIsCiAgICAgICAgICAgICAgICAgICAiPGI+T3JkZXI6PC9iPiAiLCB4JE9yZGVyLCAiXG4iLAogICAgICAgICAgICAgICAgICAgIjxiPkZhbWlseTo8L2I+ICIsIHgkRmFtaWx5LCAiXG4iLAogICAgICAgICAgICAgICAgICAgIjxiPkdlbnVzOjwvYj4gIiwgeCRHZW51cywgIlxuIikKaG92ZXJfdGF4IDwtIGFzLm1hdHJpeChob3Zlcl90YXgpCgpob3ZlcnRleHQgPC0gbWF0cml4KHBhc3RlMChob3Zlcl9zdHJhaW4sIGhvdmVyX2FidW5kLCBob3Zlcl90YXgpLAogICAgICAgICAgICAgICAgbnJvdyA9IG5yb3coaG92ZXJfdGF4KSwgbmNvbCA9IG5jb2woaG92ZXJfdGF4KSkKCiMgUGVyZm9ybSBsb2cxMCB0cmFuc2Zvcm1hdGlvbiBvbiByZWxhdGl2ZSBhYnVuZGFuY2VzCmRhdGEgPC0gbG9nKHhbLCAxOm5zYW1wXSwgYmFzZSA9IDEwKQpkYXRhW3NhcHBseShkYXRhLCBpcy5pbmZpbml0ZSldIDwtIE5BCmBgYAo8YnI+PGJyPgoKPGRpdiBjbGFzcz0iaGlnaGxpZ2h0Ij4KIyMjIDEuMiBIaWdoLXJlc29sdXRpb24gc25hcHNob3Qgb2YgY29tbXVuaXR5IGNvbXBvc2l0aW9uCjwvZGl2PgpGaWd1cmUgMiBpcyBhbiBpbnRlcmFjdGl2ZSBmaWd1cmUgc2hvd2luZyB0aGUgbWljcm9iaWFsIGNvbW11bml0eSBjb21wb3NpdGlvbiBhdCBoaWdoZXIgdGF4b25vbm9taWMgcmVzb2x1dGlvbi4gSGVyZSwgZWFjaCByb3cgY29ycmVzcG9uZHMgdG8gYSB1bmlxdWUgbWljcm9iZS4KPGJyPjxicj4KWW91IGNhbiBpbnRlcmFjdCB3aXRoIHRoaXMgZmlndXJlIGJ5OgoKKiBIb3ZlcmluZyB0aGUgY3Vyc29yIG92ZXIgYSBjZWxsIHRvIHNlZSB0aGF0IG1pY3JvYmUncyBnZW51cyBhbmQgc3BlY2llcyAoYW5kIHN0cmFpbiB3aGVuIGF2YWlsYWJsZSksIHJlbGF0aXZlIGFidW5kYW5jZSwgYW5kIGZ1bGwgdGF4b25vbWljIGNsYXNzaWZpY2F0aW9uCiogQ2xpY2tpbmcgYW5kIGRyYWdnaW5nIHRoZSBjdXJzb3Igb3ZlciBhIHBvcnRpb24gb2YgdGhlIGZpZ3VyZSB0byB6b29tCgo8YnI+PGJyPgpgYGB7ciwgb3V0LmhlaWdodCA9ICI3NTBweCIsIGVjaG8gPSBGQUxTRX0KIyBTZXQgc2FtcGxlIG5hbWVzCiNjb2xuYW1lcyhkYXRhKSA8LSBjKCJFQl8yNjkgKHNhbGl2YSkiLCAiRUJfMjcwIChDYXBTY2FuKSIsICJFQl8yNzEgKENhcFNjYW4pIiwKIyAgICAgICAgICAgICAgICAgICAgIkVCXzI3MiAoQ2FwU2NhbikiLCAiRUJfMjczIChDYXBTY2FuKSIsICJFQl8yNzQgKHN0b29sKSIpCgojIFByZXBhcmUgdGF4b25vbXkgcm93IHNpZGUKcm93X3NpZGUgPC0geCAlPiUgc2VsZWN0KFBoeWx1bSkKcm93X3NpZGUkUGh5bHVtW3Jvd19zaWRlJFBoeWx1bSAlIWluJSBtYWpvcl9waHldIDwtICJPdGhlciBwaHlsYSIKcm93X3NpZGUkUGh5bHVtIDwtIGZhY3Rvcihyb3dfc2lkZSRQaHlsdW0sIGxldmVscyA9IGMoIk90aGVyIHBoeWxhIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlByb3Rlb2JhY3RlcmlhIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJhY3Rlcm9pZGV0ZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQWN0aW5vYmFjdGVyaWEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmlybWljdXRlcyIpKQoKIyBQbG90CnBIZWF0IDwtIGhlYXRtYXBseShkYXRhLAogICAgICAgICAgICAgICAgICAgUm93diA9IEZBTFNFLAogICAgICAgICAgICAgICAgICAgQ29sdiA9IEZBTFNFLAogICAgICAgICAgICAgICAgICAgY29sb3JzID0gdmlyaWRpczo6dmlyaWRpcygxMCksCiAgICAgICAgICAgICAgICAgICByb3dfc2lkZV9jb2xvcnMgPSByb3dfc2lkZSwKICAgICAgICAgICAgICAgICAgIHJvd19zaWRlX3BhbGV0dGUgPSBjKCJBY3Rpbm9iYWN0ZXJpYSIgPSAiI0ZGQjcyNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQmFjdGVyb2lkZXRlcyIgPSAiIzY0QzYyQSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmlybWljdXRlcyIgPSAiIzA3MkFDOCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUHJvdGVvYmFjdGVyaWEiID0gIiNFOTNCNEYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk90aGVyIHBoeWxhIiA9ICIjODMyQ0ZGIiksCiAgICAgICAgICAgICAgICAgICBzdWJwbG90X21hcmdpbiA9IDAuMDEsCiAgICAgICAgICAgICAgICAgICBzdWJwbG90X3dpZHRocyA9IGMoMC45LCAwLjA3KSwKICAgICAgICAgICAgICAgICAgIHNpZGVfY29sb3JfY29sb3JiYXJfbGVuID0gMC4zLAogICAgICAgICAgICAgICAgICAgcGxvdF9tZXRob2QgPSAicGxvdGx5IiwKICAgICAgICAgICAgICAgICAgIGN1c3RvbV9ob3ZlcnRleHQgPSBob3ZlcnRleHQsCiAgICAgICAgICAgICAgICAgICB4bGFiID0gIjxiPlNhbXBsZTwvYj4iLAogICAgICAgICAgICAgICAgICAgeWxhYiA9ICI8Yj5NaWNyb2JlPC9iPiIsCiAgICAgICAgICAgICAgICAgICBjb2xvcmJhcl94cG9zID0gMS4wMTksCiAgICAgICAgICAgICAgICAgICBjb2xvcmJhcl95cG9zID0gMC41LAogICAgICAgICAgICAgICAgICAgY29sb3JiYXJfbGVuID0gMC4zKSAlPiUKICBsYXlvdXQoeGF4aXMgPSBsaXN0KHNob3dncmlkID0gRkFMU0UpLAogICAgICAgICB5YXhpcyA9IGxpc3Qoc2hvd2dyaWQgPSBGQUxTRSwKICAgICAgICAgICAgICAgICAgICAgIHNob3d0aWNrbGFiZWxzID0gRkFMU0UpLAogICAgICAgICBmb250ID0gbGlzdChmYW1pbHkgPSAiQXJpYWwiKSkgJT4lCiAgY29sb3JiYXIodGl0bGUgPSAiUmVsYXRpdmUgYWJ1bmRhbmNlIiwKICAgICAgICAgICB0aWNrdmFscyA9IGMoLTEsIDAsIDEpLAogICAgICAgICAgIHRpY2t0ZXh0ID0gYygiMC4xJSIsICIxJSIsICIxMCUiKSkKCiMgRm9ybWF0IHJvdyBzaWRlCnBIZWF0JHgkbGF5b3V0JHhheGlzMiR0aWNrdGV4dCA8LSAiUGh5bHVtIgpwSGVhdCR4JGxheW91dCR4YXhpcyRsaW5lY29sb3IgPC0gIiMwMDAwMDAiCnBIZWF0JHgkbGF5b3V0JHhheGlzMiRsaW5lY29sb3IgPC0gIiMwMDAwMDAiCnBIZWF0JHgkbGF5b3V0JHlheGlzJGxpbmVjb2xvciA8LSAiIzAwMDAwMCIKcEhlYXQkeCRsYXlvdXQkbGVnZW5kJHlhbmNob3IgPC0gImJvdHRvbSIKcEhlYXQKYGBgCioqRmlndXJlIDI6KiogSGVhdCBtYXAgc2hvd2luZyByZWxhdGl2ZSBhYnVuZGFuY2Ugb2YgbWljcm9iZXMgaW4gZWFjaCBzYW1wbGUgKE4gPSAyMDkgdG90YWwgaWRlbnRpZmllZCkuIEVhY2ggcm93IGNvcnJlc3BvbmRzIHRvIGEgdW5pcXVlIG1pY3JvYmUgYW5kIGVhY2ggY29sdW1uIGNvcnJlc3BvbmRzIHRvIGFuIGluZGl2aWR1YWwgc2FtcGxlLiBOb3RlIHRoZSByZWxhdGl2ZSBhYnVuZGFuY2UgY29sb3JzY2FsZSBpcyBpbiBsb2cgdW5pdHMuCgo8YnI+PGJyPgoKPGRpdiBjbGFzcz0iaGlnaGxpZ2h0Ij4KIyMjIDEuMyBOb3RhYmxlIG1pY3JvYmVzIGRldGVjdGVkCjwvZGl2PgoKKiAqU3RyZXB0b2NvY2N1cyBhbmdpbm9zdXMqOgogICogUHJldmlvdXNseSBzaG93biB0byBwcm9kdWNlIGFuIGFudGltaWNyb2JpYWwgcHJvdGVpbiAoImFuZ2ljaW4iKSB0aGF0IGRpc3J1cHRzIHRoZSBjZWxsIG1lbWJyYW5lIG9mIGNsb3NlbHkgcmVsYXRlZCBvcmdhbmlzbXMsIGdpdmluZyAqU3RyZXB0b2NvY2N1cyBhbmdpbm9zdXMqIGEgY29tcGV0aXRpdmUgYWR2YW50YWdlIChWb2dlbCAqZXQgYWwqLiwgMjAyMSkKICAqIE1vc3QgcmVsYXRpdmVseSBhYnVuZGFudCBtaWNyb2JlIGluIHByb3hpbWFsIENhcFNjYW4gc2FtcGxlICh+OCUpCjxicj48YnI+CiogKkZhZWNhbGliYWN0ZXJpdW0gcHJhdXNuaXR6aWkqOgogICogUHJldmlvdXNseSBzaG93biB0byBwcm9kdWNlIGEgc21hbGwgcHJvdGVpbiB0aGF0IGFsbGV2aWF0ZXMgZ3V0IGluZmxhbW1hdGlvbiBpbiBtb3VzZSBtb2RlbHMgKFF1w6l2cmFpbiBldCBhbC4sIDIwMTcpCiAgKiBGb3VuZCBhdCB+NSUgcmVsYXRpdmUgYWJ1bmRhbmNlIGluIGRpc3RhbCBDYXBTY2FuIHNhbXBsZQogIAo8YnI+PGJyPgoKPGRpdiBjbGFzcz0iaGlnaGxpZ2h0Ij4KIyMjIDEuNCBSZWZlcmVuY2VzCjwvZGl2PgoKUXXDqXZyYWluLCBFLiwgTWF1YmVydCwgTS5BLiwgTWljaG9uLCBDLiwgQ2hhaW4sIEYuLCBNYXJxdWFudCwgUi4sIFRhaWxoYWRlcywgSi4sICpldCBhbCouICgyMDE3KSBJZGVudGlmaWNhdGlvbiBvZiBhbiBhbnRpLWluZmxhbW1hdG9yeSBwcm90ZWluIGZyb20gKkZhZWNhbGliYWN0ZXJpdW0gcHJhdXNuaXR6aWkqLCBhIGNvbW1lbnNhbCBiYWN0ZXJpdW0gZGVmaWNpZW50IGluIENyb2hu4oCZcyBkaXNlYXNlLiBHdXQgNjU6IDQxNeKAkzQyNS4KClZvZ2VsLCBWLiwgQmF1ZXIsIFIuLCBNYXVlcmVyLCBTLiwgU2NoaWZmZWxob2x6LCBOLiwgSGF1cHQsIEMuLCBTZWlib2xkLCBHLk0uLCAqZXQgYWwqLiAoMjAyMSkgQW5naWNpbiwgYSBub3ZlbCBiYWN0ZXJpb2NpbiBvZiAqU3RyZXB0b2NvY2N1cyBhbmdpbm9zdXMqLiBTY2kgUmVwIDExOiAx4oCTMTYu